Google Cloud Service Accounts
サービス アカウントは、ユーザーではなく、.....で使用される特別なアカウントです。
アプリケーションはサービス アカウントを使用して、承認された API 呼び出しを行います。
ドメイン全体の委任。 そのドメイン(組織)のユーザーの権限でサービスをリクエストする強力機能
また、逆?で、ユーザーがサービスアカウントになりすましをして、リクエストするものもある。
まだ、把握してる感じがない...
プログラムやアプリが実行主体(principal)となる場合に使うアカウント
gcloud, CLIでの認証は通常は、defaultのユーザーアカウントだが、 gcloud auth activate-service-account abc@yz.com --key-file=dsfs.json みたいにしても使える
このサービスアカウントは、何のroleをもってるのか?
gcloud iam service-account get-iam-policy MY_SERVICE_ACCOUNT は、
get-iam-policyもあるけど....etagの値しかでない?
gcloud projects get-iam-policy ${PROJECT_ID} --flatten="bindings[].members" --format="table(bindings.role)" --fitter="bindings.members:${SERVICE_ACCOUNT}
サービスアカウントには、タイプがある
ユーザー管理
デフォルトサービスアカウント
サービスエージェント(強いやつ?)
Google API サービスエージェント
service-agent-manager@system.gserviceaccount.com
それぞれのサービスのエージェント
Google管理のもの
{project-number}@cloudbuild.gserviceaccount.comなど
こういう説明はなかなか無いので、参考になった。
キーの管理
参考:
base64でencodeして、環境変数にいれて、使うときにdecodeしてるフローが参考になった。 上記の管理のリンクもこの記事からリンクして読んだ。
@2022 ただ、最近は?CIサービスは、secretを扱う機能があるので、それを使うのだろう。